package com.greenold.finance.domain;

import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.greenold.common.annotation.Excel;
import com.greenold.common.core.domain.BaseEntity;

/**
 * 入账列表对象 bill
 * 
 * @author ruoyi
 * @date 2025-10-13
 */
public class Bill extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 主键 */
    private String id;

    /** 账单编号 */
    @Excel(name = "账单编号")
    private String billNo;

    /** 交易系统订单号 */
    private String tradeOrderNo;

    /** 账单类型（0：月度账单，1服务账单） */
    @Excel(name = "账单类型", readConverterExp = "0=：月度账单，1服务账单")
    private String billType;

    /** 账单月份 (YYYY-MM) */
    @Excel(name = "账单月份 (YYYY-MM)")
    private String billMonth;

    /** 老人ID */
    private String elderId;

    /** 账单金额（元） */
    @Excel(name = "账单金额", readConverterExp = "元=")
    private BigDecimal billAmount;

    /** 应付金额（元） */
    @Excel(name = "应付金额", readConverterExp = "元=")
    private BigDecimal payableAmount;

    /** 预付款支付金额 */
    private BigDecimal prepaidAmount;

    /** 押金金额 */
    private BigDecimal depositAmount;

    /** 本期应付 */
    private BigDecimal currentPayable;

    /** 支付截止时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "支付截止时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date paymentDeadline;

    /** 账单状态（0：未支付，1已支付,2已关闭） */
    @Excel(name = "账单状态", readConverterExp = "0=：未支付，1已支付,2已关闭")
    private String billStatus;

    /** 账单开始时间 */
    private Date billStartTime;

    /** 账单结束时间 */
    private Date billEndTime;

    /** 共计天数（天） */
    private String totalDays;
    private String elderName;
    private String elderIdCard;

    // ... 其他现有方法

    public String getElderName() {
        return elderName;
    }

    public void setElderName(String elderName) {
        this.elderName = elderName;
    }

    public String getElderIdCard() {
        return elderIdCard;
    }

    public void setElderIdCard(String elderIdCard) {
        this.elderIdCard = elderIdCard;
    }

    /** 创建时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date createdAt;

    /** $column.columnComment */
    private Date updatedAt;

    /** 护理等级名称 */
    private String careLevelName;

    /** 房间类型名称 */
    private String roomTypeName;

    /** $column.columnComment */
    private String createdBy;

    /** $column.columnComment */
    private String updatedBy;

    /** 扩展字段1 */
    private String extend1;

    /** 扩展字段2 */
    private String extend2;

    public void setId(String id) 
    {
        this.id = id;
    }

    public String getId() 
    {
        return id;
    }

    public void setBillNo(String billNo) 
    {
        this.billNo = billNo;
    }

    public String getBillNo() 
    {
        return billNo;
    }

    public void setTradeOrderNo(String tradeOrderNo) 
    {
        this.tradeOrderNo = tradeOrderNo;
    }

    public String getTradeOrderNo() 
    {
        return tradeOrderNo;
    }

    public void setBillType(String billType) 
    {
        this.billType = billType;
    }

    public String getBillType() 
    {
        return billType;
    }

    public void setBillMonth(String billMonth) 
    {
        this.billMonth = billMonth;
    }

    public String getBillMonth() 
    {
        return billMonth;
    }

    public void setElderId(String elderId) 
    {
        this.elderId = elderId;
    }

    public String getElderId() 
    {
        return elderId;
    }

    public void setBillAmount(BigDecimal billAmount) 
    {
        this.billAmount = billAmount;
    }

    public BigDecimal getBillAmount() 
    {
        return billAmount;
    }

    public void setPayableAmount(BigDecimal payableAmount) 
    {
        this.payableAmount = payableAmount;
    }

    public BigDecimal getPayableAmount() 
    {
        return payableAmount;
    }

    public void setPrepaidAmount(BigDecimal prepaidAmount) 
    {
        this.prepaidAmount = prepaidAmount;
    }

    public BigDecimal getPrepaidAmount() 
    {
        return prepaidAmount;
    }

    public void setDepositAmount(BigDecimal depositAmount) 
    {
        this.depositAmount = depositAmount;
    }

    public BigDecimal getDepositAmount() 
    {
        return depositAmount;
    }

    public void setCurrentPayable(BigDecimal currentPayable) 
    {
        this.currentPayable = currentPayable;
    }

    public BigDecimal getCurrentPayable() 
    {
        return currentPayable;
    }

    public void setPaymentDeadline(Date paymentDeadline) 
    {
        this.paymentDeadline = paymentDeadline;
    }

    public Date getPaymentDeadline() 
    {
        return paymentDeadline;
    }

    public void setBillStatus(String billStatus) 
    {
        this.billStatus = billStatus;
    }

    public String getBillStatus() 
    {
        return billStatus;
    }

    public void setBillStartTime(Date billStartTime) 
    {
        this.billStartTime = billStartTime;
    }

    public Date getBillStartTime() 
    {
        return billStartTime;
    }

    public void setBillEndTime(Date billEndTime) 
    {
        this.billEndTime = billEndTime;
    }

    public Date getBillEndTime() 
    {
        return billEndTime;
    }

    public void setTotalDays(String totalDays) 
    {
        this.totalDays = totalDays;
    }

    public String getTotalDays() 
    {
        return totalDays;
    }

    public void setCreatedAt(Date createdAt) 
    {
        this.createdAt = createdAt;
    }

    public Date getCreatedAt() 
    {
        return createdAt;
    }

    public void setUpdatedAt(Date updatedAt) 
    {
        this.updatedAt = updatedAt;
    }

    public Date getUpdatedAt() 
    {
        return updatedAt;
    }

    public void setCareLevelName(String careLevelName) 
    {
        this.careLevelName = careLevelName;
    }

    public String getCareLevelName() 
    {
        return careLevelName;
    }

    public void setRoomTypeName(String roomTypeName) 
    {
        this.roomTypeName = roomTypeName;
    }

    public String getRoomTypeName() 
    {
        return roomTypeName;
    }

    public void setCreatedBy(String createdBy) 
    {
        this.createdBy = createdBy;
    }

    public String getCreatedBy() 
    {
        return createdBy;
    }

    public void setUpdatedBy(String updatedBy) 
    {
        this.updatedBy = updatedBy;
    }

    public String getUpdatedBy() 
    {
        return updatedBy;
    }

    public void setExtend1(String extend1) 
    {
        this.extend1 = extend1;
    }

    public String getExtend1() 
    {
        return extend1;
    }

    public void setExtend2(String extend2) 
    {
        this.extend2 = extend2;
    }

    public String getExtend2() 
    {
        return extend2;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("billNo", getBillNo())
            .append("tradeOrderNo", getTradeOrderNo())
            .append("billType", getBillType())
            .append("billMonth", getBillMonth())
            .append("elderId", getElderId())
            .append("billAmount", getBillAmount())
            .append("payableAmount", getPayableAmount())
            .append("prepaidAmount", getPrepaidAmount())
            .append("depositAmount", getDepositAmount())
            .append("currentPayable", getCurrentPayable())
            .append("paymentDeadline", getPaymentDeadline())
            .append("billStatus", getBillStatus())
            .append("billStartTime", getBillStartTime())
            .append("billEndTime", getBillEndTime())
            .append("totalDays", getTotalDays())
            .append("createdAt", getCreatedAt())
            .append("updatedAt", getUpdatedAt())
            .append("careLevelName", getCareLevelName())
            .append("roomTypeName", getRoomTypeName())
            .append("createdBy", getCreatedBy())
            .append("updatedBy", getUpdatedBy())
            .append("remark", getRemark())
            .append("extend1", getExtend1())
            .append("extend2", getExtend2())
            .toString();
    }
}
